export function keywords(range: monaco.IRange):monaco.languages.CompletionItem[] {
  return [
    {
      label: "int 0 #单元数量",
      insertText: "int 0 ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      filterText: "int 0",
      detail: "栈顶分配存储单元",
    },
    {
      label: "alloc:int 0 #单元数量",
      insertText: "int 0 ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      filterText: "alloc",
      detail: "栈顶分配存储单元",
    },
    {
      filterText: "opr 0 0",
      label: "opr 0 0",
      insertText: "opr 0 0\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "结束被调用过程 返回调用点并退栈",
    },
    {
      filterText: "return",
      label: "return:opr 0 0",
      insertText: "opr 0 0\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "结束被调用过程 返回调用点并退栈",
    },
    {
      filterText: "opr 0 1",
      label: "opr 0 1",
      insertText: "opr 0 1\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "栈顶原地取相反数",
    },
    {
      filterText: "reverse",
      label: "reverse:opr 0 1",
      insertText: "opr 0 1\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "栈顶原地取相反数",
    },
    {
      filterText: "opr 0 2",
      label: "opr 0 2",
      insertText: "opr 0 2\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的和",
    },
    {
      filterText: "opr 0 3",
      label: "opr 0 3",
      insertText: "opr 0 3\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的差值",
    },
    {
      filterText: "opr 0 4",
      label: "opr 0 4",
      insertText: "opr 0 4\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的乘积",
    },
    {
      filterText: "opr 0 5",
      label: "opr 0 5",
      insertText: "opr 0 5\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的整除商",
    },
    {
      filterText: "opr 0 6",
      label: "opr 0 6",
      insertText: "opr 0 6\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "栈顶原地取二进制最后一位",
    },
    {
      filterText: "opr 0 8",
      label: "opr 0 8",
      insertText: "opr 0 8\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶是(0)否(1)相等",
    },
    {
      filterText: "opr 0 9",
      label: "opr 0 9",
      insertText: "opr 0 9\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶是(0)否(1)不相等",
    },
    {
      filterText: "opr 0 10",
      label: "opr 0 10",
      insertText: "opr 0 10\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)小于栈顶",
    },
    {
      filterText: "opr 0 11",
      label: "opr 0 11",
      insertText: "opr 0 11\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)大于等于栈顶",
    },
    {
      filterText: "opr 0 12",
      label: "opr 0 12",
      insertText: "opr 0 12\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)大于栈顶",
    },
    {
      filterText: "opr 0 13",
      label: "opr 0 13",
      insertText: "opr 0 13\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)小于等于栈顶",
    },
    {
      filterText: "opr 0 14",
      label: "opr 0 14",
      insertText: "opr 0 14\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "输出栈顶的数",
    },
    {
      filterText: "opr 0 15",
      label: "opr 0 15",
      insertText: "opr 0 15\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "输出换行",
    },
    {
      filterText: "opr 0 16",
      label: "opr 0 16",
      insertText: "opr 0 16\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "读输入进栈",
    },
    {
      filterText: "add",
      label: "add:opr 0 2",
      insertText: "opr 0 2\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的和",
    },
    {
      filterText: "sub",
      label: "sub:opr 0 3",
      insertText: "opr 0 3\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的差值",
    },
    {
      filterText: "mult",
      label: "mult:opr 0 4",
      insertText: "opr 0 4\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的乘积",
    },
    {
      filterText: "div",
      label: "div:opr 0 5",
      insertText: "opr 0 5\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶的整除商",
    },
    {
      filterText: "even",
      label: "even:opr 0 6",
      insertText: "opr 0 6\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "栈顶原地取二进制最后一位",
    },
    {
      filterText: "equal",
      label: "equal:opr 0 8",
      insertText: "opr 0 8\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶是(0)否(1)相等",
    },
    {
      filterText: "neq",
      label: "neq:opr 0 9",
      insertText: "opr 0 9\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶和栈顶是(0)否(1)不相等",
    },
    {
      filterText: "lt",
      label: "lt:opr 0 10",
      insertText: "opr 0 10\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)小于栈顶",
    },
    {
      filterText: "ge",
      label: "ge:opr 0 11",
      insertText: "opr 0 11\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)大于等于栈顶",
    },
    {
      filterText: "gt",
      label: "gt:opr 0 12",
      insertText: "opr 0 12\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)大于栈顶",
    },
    {
      filterText: "le",
      label: "le:opr 0 13",
      insertText: "opr 0 13\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "推入弹出的次栈顶是(0)否(1)小于等于栈顶",
    },
    {
      filterText: "pr",
      label: "print:opr 0 14",
      insertText: "opr 0 14\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "输出栈顶的数",
    },
    {
      filterText: "pl",
      label: "pl:opr 0 15",
      insertText: "opr 0 15\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "输出换行",
    },
    {
      filterText: "input",
      label: "input:opr 0 16",
      insertText: "opr 0 16\n",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "读输入进栈",
    },
    {
      label: "cal #层数 #地址",
      filterText: "cal",
      insertText: "cal",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "调用过程",
    },
    {
      label: "lit 0 #立即数",
      filterText: "lit 0",
      insertText: "lit 0 ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "入栈",
    },
    {
      label: "push:lit 0 #立即数",
      filterText: "push",
      insertText: "lit 0 ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "入栈",
    },
    {
      label: "sto #层数 #地址",
      filterText: "sto",
      insertText: "sto ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "弹出栈顶并存放",
    },
    {
      label: "lod #层数 #地址",
      filterText: "lod",
      insertText: "lod ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "取出并入栈",
    },
    {
      label: "jmp 0 #行数",
      filterText: "jmp 0",
      insertText: "jmp 0 ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "跳转",
    },
    {
      label: "jpc 0 #行数",
      filterText: "jpc 0",
      insertText: "jpc 0 ",
      kind: monaco.languages.CompletionItemKind.Keyword,
      range,
      detail: "条件跳转",
    },
  ];
}
